package com.example.design.pattern.structure

/**
 * 装饰器模式可以将不同功能的单个模块规划至不同的装饰器类中
 * 独立自主，各司其职，根据需求自由搭配
 **/
fun main() {
    Title(Bottom(Body())).show()
}

interface Html {
    fun show()
}

class Body : Html {
    override fun show() {
        println("showBody")
    }

}

class Title(private val html: Html) : Html {

    override fun show() {
        println("showTitle")
        html.show()
    }

}

class Bottom(private val html: Html) : Html {
    override fun show() {
        html.show()
        println("showBottom")
    }

}